/*
 types.h
 Matthew Jee
 mcjee@ucsc.edu
*/

#ifndef Dynamical_types_h
#define Dynamical_types_h

#include <vector>
#include "../renderer/vector.h"
#include "../renderer/mesh.h"

namespace mj {

class Point {
public:
    Point() : position(0, 0, 0), time(0) {};
    Point(Vector3 position, double time) : position(position), time(time) {};
    Vector3 position;
    double time;

    // membership attributes
    int pathID;
    int setID;
    int clusterID;
};

typedef std::vector<Point> Path;
typedef std::vector<Point> PointSet;
    
class Cluster {
private:

public:
    std::vector<Point> points;
    Vector3 center;
    double radius;

    int tag; //arbitrary data given by clustering algorithm

    Cluster() {};
    void computeCenterAndRadius();
};

}

#endif
